<?php
/**
 * String 字符串辅助函数扩展
 * 
 * @version 1.0.0 
 * @author  Jason
 * @date	2017年6月12日 下午12:35:19
 */

defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * 扩展 CodeIgniter String Helpers
 * 
 * @package		CodeIgniter
 * @subpackage	Helpers
 * @category	Helpers
 * @author		EllisLab Dev Team
 * @link		https://codeigniter.com/user_guide/helpers/string_helper.html
 */

// ------------------------------------------------------------------------

if ( ! function_exists('safeExplode'))
{
	/**
	 * 安全 explode 方法
	 * 
	 * @desc 		PHP explode($delimiter, $string[, $limit]) 函数有坑
	 * 				See To: 
	 * 					http://php.net/manual/zh/function.explode.php#99830
	 * 					http://php.net/manual/zh/function.explode.php#111650
	 * @version 1.0.0
	 * 
	 * @param	string	$delimiter	边界上的分隔字符
	 * @param	string	$string		输入的字符串
	 * @param	int 	$limit		如果设置了 limit 参数并且是正数，则返回的数组包含最多 limit 个元素，而最后那个元素将包含 string 的剩余部分。

									如果 limit 参数是负数，则返回除了最后的 -limit 个元素外的所有元素。

									如果 limit 是 0，则会被当做 1。
									
									由于历史原因，虽然 implode() 可以接收两种参数顺序，但是 explode() 不行。你必须保证 separator 参数在 string 参数之前才行。
	 * 
	 * 
	 * @return	array	此函数返回由字符串组成的 array，每个元素都是 string 的一个子串，它们被字符串 delimiter 作为边界点分割出来。
	 * 					
	 * 					如果 delimiter 为空字符串（""），explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到，并且使用了负数的 limit ， 那么会返回空的 array， 否则返回包含 string 单个元素的数组。
	 * 					
	 * 					另外，如果 string 为空值（"", NULL, FALSE），则返回空字符串，而不是 array("")！
	 * 					另外，过滤掉结果中的空字符串值！
	 */
	function safeExplode($delimiter, $string, $limit = null)
	{
		return array_values(array_filter(@explode($delimiter, $string, $limit), 'strlen'));
	}
}

// ------------------------------------------------------------------------



// --------------------------------------------------------------------



// --------------------------------------------------------------------



// --------------------------------------------------------------------

